package br.Tela;

import java.util.List;

import br.Entidade.Disciplina;
import br.Repositorio.RepositorioDisciplina;
import br.gradeManager.R;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListView;

public class DisciplinaActivity extends ListActivity {
	
	protected static final int INSERIR_EDITAR = 1;
	protected static final int HELP = 2;
	public static RepositorioDisciplina repositorio;
	private List<Disciplina> disciplinas;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle icicle) {
		super.onCreate(icicle);
		repositorio = new RepositorioDisciplina(this);
		atualizarLista();		
	}
	
	protected void atualizarLista(){
		// Pega a lista de disciplinas e exibe na tela
		disciplinas = repositorio.listarDisciplinas();
		//Adaptador de lista customizado para cada linha de uma disciplina
		setListAdapter(new DisciplinaAdapter(this, disciplinas));
	}
	
	public boolean onCreateOptionMenu(Menu menu){
		super.onCreateOptionsMenu(menu);
		menu.add(0, INSERIR_EDITAR, 0, "Inserir Disciplina").setIcon(R.drawable.novo);
		menu.add(0, HELP, 0, "Ajuda").setIcon(R.drawable.icon);
		return true;
	}

	public boolean onMenuItemSelected(int featureId, MenuItem item){
		// Clicou no menu
		switch(item.getItemId()){
		case INSERIR_EDITAR:
			//Abre a tela com o formulario de adicionar
			startActivityForResult(new Intent(this, EditarDisciplinaActivity.class), INSERIR_EDITAR);
			break;
		case HELP:
			//Abre a tela de Ajuda
			startActivity(new Intent(this, AjudaActivity.class));
			break;
		}
		return true;
	}
	
	protected void onListItemClick(ListView l, View v, int position, long id){
		super.onListItemClick(l, v, position, id);
		editarDisciplina(position);
	}
	
	//Recupera o id da disciplina, e abre a tela de edicao
	protected void editarDisciplina(int posicao){
		//Usuario cliucou em alguma disciplina da lista
		//Recupera a disciplina selecionada
		Disciplina disciplina = disciplinas.get(posicao);
		//Cria a intent para abrir a tela de editar
		Intent it = new Intent(this, EditarDisciplinaActivity.class);
		//Passa o id da disciplina como parametro
		it.putExtra("id", disciplina.id);
		//Abre a tela de edicao
		startActivityForResult(it, INSERIR_EDITAR);
	}
	
	protected void onActivityResult(int codigo, int codigoRetorno, Intent it){
		super.onActivityResult(codigo, codigoRetorno, it);
		//Quando a activity EditarDisciplina retornar, seja se foi para adicionar, atualizar ou excluir
		//Vamos atualizar a lista
		if(codigoRetorno == RESULT_OK){
			//atualiza a lista na tela
			atualizarLista();
		}
	}
	
	protected void onDestroy(){
		super.onDestroy();
		//Fecha o banco
		repositorio.fechar();
	}
}